/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prueba;

/**
 *
 * @author Hazziel
 */
public class CarroNorte extends Thread {
  
  private MainFrame mFrame = null;  
  
  private String mNombre = "";
  
  private int mTiempoParaCruzar = 1;
  
  public CarroNorte() {
  }
  
  public String toString() {
    return mNombre;
  }
  
  public void run() {
    
    try {
     
      mFrame.addColaNorte( this );
      
      Semaforo.SemaforoNorte.acquire();
      
      Semaforo.NumeroDeCarrosNorte ++; 
      
      if( Semaforo.NumeroDeCarrosNorte == 1 ) {
        
        Semaforo.SemaforoPuente.acquire();
        
      }
      
      Semaforo.SemaforoNorte.release();
      
      mFrame.deNorteAPuente( this );
      
      //System.out.println("Usando El Puente");
      
      Thread.sleep( 1000 * this.mTiempoParaCruzar );
            
      Semaforo.SemaforoNorte.acquire();
      
      Semaforo.NumeroDeCarrosNorte --; 
      
      if( Semaforo.NumeroDeCarrosNorte == 0 ) {
        
        Semaforo.SemaforoPuente.release();
        
      }
      
      Semaforo.SemaforoNorte.release();
      
      mFrame.dePuenteALimbo( this );
      
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
    }
    
  }

  public synchronized void setFrame(MainFrame mFrame) {
    this.mFrame = mFrame;
  }

  public synchronized MainFrame getFrame() {
    return mFrame;
  }

  public synchronized void setNombre(String mNombre) {
    this.mNombre = mNombre;
  }

  public synchronized String getNombre() {
    return mNombre;
  }

  public synchronized void setTiempoParaCruzar(int mTiempoParaCruzar) {
    this.mTiempoParaCruzar = mTiempoParaCruzar;
  }

  public synchronized int getTiempoParaCruzar() {
    return mTiempoParaCruzar;
  }
}
